﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.UI.WebControls;
namespace Maticsoft.Common
   
{
   public  class gridViewClass
   {
       /// <summary> 
       /// 合并GridView中某列相同信息的行（单元格） 
       /// </summary> 
       /// <param name="GridView1">GridView</param> 
       /// <param name="cellNum">第几列</param> 
       public static void GroupRows(GridView GridView1, int cellNum)
       {
           int i = 0, rowSpanNum = 1;
           while (i < GridView1.Rows.Count - 1)
           {
               GridViewRow gvr = GridView1.Rows[i];
               for (++i; i < GridView1.Rows.Count; i++)
               {
                   GridViewRow gvrNext = GridView1.Rows[i];
                   if (gvr.Cells[cellNum].Text == gvrNext.Cells[cellNum].Text)
                   {
                       gvrNext.Cells[cellNum].Visible = false;
                       rowSpanNum++;
                   }
                   else
                   {
                       gvr.Cells[cellNum].RowSpan = rowSpanNum;
                       rowSpanNum = 1;
                       break;
                   }
                   if (i == GridView1.Rows.Count - 1)
                   {
                       gvr.Cells[cellNum].RowSpan = rowSpanNum;
                   }
               }
           }
       }



       /// <summary> 
       /// 合并GridView中某列相同信息的行（单元格）根据前面合并的行合并跟随的列 
       /// </summary> 
       /// <param name="GridView1">GridView</param> 
       /// <param name="cellNum">第几列</param> 
       public static void GroupRows(GridView GridView1, int cellNum, int followCell1, int followCell2, int followCell3, int followCell4)
       {
           int i = 0, rowSpanNum = 1;
           while (i < GridView1.Rows.Count - 1)
           {
               GridViewRow gvr = GridView1.Rows[i];
               for (++i; i < GridView1.Rows.Count; i++)
               {
                   GridViewRow gvrNext = GridView1.Rows[i];
                   if (gvr.Cells[cellNum].Text == gvrNext.Cells[cellNum].Text)
                   {
                       gvrNext.Cells[cellNum].Visible = false;
                       gvrNext.Cells[followCell1].Visible = false;
                  //    if (followCell2!=null )
                          gvrNext.Cells[followCell2].Visible = false;
                   //   if (followCell3 != null)
                       gvrNext.Cells[followCell3].Visible = false;
                 //     if (followCell4 != null)
                       gvrNext.Cells[followCell4].Visible = false;
                      //if (followCell5 != null)
                      //    gvrNext.Cells[followCell5].Visible = false;
                       rowSpanNum++;
                   }
                   else
                   {
                       gvr.Cells[cellNum].RowSpan = rowSpanNum;
                       gvr.Cells[followCell1].RowSpan = rowSpanNum;
                      // if (followCell2 != null)
                       gvr.Cells[followCell2].RowSpan = rowSpanNum;
                     //  if (followCell3 != null)
                       gvr.Cells[followCell3].RowSpan = rowSpanNum;
                        
                    //   if (followCell4 != null)
                       gvr.Cells[followCell4].RowSpan = rowSpanNum;
                       // if (followCell5 != null)
                       //gvr.Cells[followCell5].RowSpan = rowSpanNum;
                       rowSpanNum = 1;
                       break;
                   }
                   if (i == GridView1.Rows.Count - 1)
                   {
                       gvr.Cells[cellNum].RowSpan = rowSpanNum;
                       gvr.Cells[followCell1].RowSpan = rowSpanNum;
                      // if (followCell2 != null)
                       gvr.Cells[followCell2].RowSpan = rowSpanNum;
                      // if (followCell3 != null)
                       gvr.Cells[followCell3].RowSpan = rowSpanNum;
                     //  if (followCell4!= null)
                       gvr.Cells[followCell4].RowSpan = rowSpanNum;
                       //if (followCell5 != null)
                       //gvr.Cells[followCell5].RowSpan = rowSpanNum;

                   }
               }
           }
       }
     
       /// <summary> 
       /// 合并GridView中某列相同信息的行（单元格）根据前面合并的行合并跟随的列 
       /// </summary> 
       /// <param name="GridView1">GridView</param> 
       /// <param name="cellNum">第几列</param> 
       public static void GroupRows(GridView GridView1, int cellNum, int followCell1, int followCell2, int followCell3, int followCell4,int followCell5)
       {
           int i = 0, rowSpanNum = 1;
           while (i < GridView1.Rows.Count - 1)
           {
               GridViewRow gvr = GridView1.Rows[i];
               for (++i; i < GridView1.Rows.Count; i++)
               {
                   GridViewRow gvrNext = GridView1.Rows[i];
                   if (gvr.Cells[cellNum].Text == gvrNext.Cells[cellNum].Text)
                   {
                       gvrNext.Cells[cellNum].Visible = false;
                       gvrNext.Cells[followCell1].Visible = false;
                     //  if (followCell2 != null)
                           gvrNext.Cells[followCell2].Visible = false;
                     //  if (followCell3 != null)
                           gvrNext.Cells[followCell3].Visible = false;
                     //  if (followCell4 != null)
                           gvrNext.Cells[followCell4].Visible = false;
                     //  if (followCell5 != null)
                          gvrNext.Cells[followCell5].Visible = false;
                       rowSpanNum++;
                   }
                   else
                   {
                       gvr.Cells[cellNum].RowSpan = rowSpanNum;
                       gvr.Cells[followCell1].RowSpan = rowSpanNum;
                     //  if (followCell2 != null)
                           gvr.Cells[followCell2].RowSpan = rowSpanNum;
                     //  if (followCell3 != null)
                           gvr.Cells[followCell3].RowSpan = rowSpanNum;

                     //  if (followCell4 != null)
                           gvr.Cells[followCell4].RowSpan = rowSpanNum;
                    //    if (followCell5 != null)
                       gvr.Cells[followCell5].RowSpan = rowSpanNum;
                       rowSpanNum = 1;
                       break;
                   }
                   if (i == GridView1.Rows.Count - 1)
                   {
                       gvr.Cells[cellNum].RowSpan = rowSpanNum;
                       gvr.Cells[followCell1].RowSpan = rowSpanNum;
                      // if (followCell2 != null)
                           gvr.Cells[followCell2].RowSpan = rowSpanNum;
                     //  if (followCell3 != null)
                           gvr.Cells[followCell3].RowSpan = rowSpanNum;
                     //  if (followCell4 != null)
                           gvr.Cells[followCell4].RowSpan = rowSpanNum;
                     //  if (followCell5 != null)
                       gvr.Cells[followCell5].RowSpan = rowSpanNum;

                   }
               }
           }
       }


       /// <summary> 
       /// 合并GridView中某列相同信息的行（单元格）根据前面合并的行合并跟随的列 
       /// 反审核页面用
       /// </summary> 
       /// <param name="GridView1">GridView</param> 
       /// <param name="cellNum">第几列</param> 
       public static void GroupRowsR(GridView GridView1, int cellNum, int followCell1, int followCell2, int followCell3, int followCell4, int followCell5, int followCell6)
       {
           int i = 0, rowSpanNum = 1;
           while (i < GridView1.Rows.Count - 1)
           {
               GridViewRow gvr = GridView1.Rows[i];
               for (++i; i < GridView1.Rows.Count; i++)
               {
                   GridViewRow gvrNext = GridView1.Rows[i];
                   if (gvr.Cells[cellNum].Text == gvrNext.Cells[cellNum].Text)
                   {
                       gvrNext.Cells[cellNum].Visible = false;
                       gvrNext.Cells[followCell1].Visible = false;
                       gvrNext.Cells[followCell2].Visible = false;
                       gvrNext.Cells[followCell3].Visible = false;
                       gvrNext.Cells[followCell4].Visible = false;
                       gvrNext.Cells[followCell5].Visible = false;
                       gvrNext.Cells[followCell6].Visible = false;
                       rowSpanNum++;
                   }
                   else
                   {
                       gvr.Cells[cellNum].RowSpan = rowSpanNum;
                       gvr.Cells[followCell1].RowSpan = rowSpanNum;
                       gvr.Cells[followCell2].RowSpan = rowSpanNum;
                       gvr.Cells[followCell3].RowSpan = rowSpanNum;
                       gvr.Cells[followCell4].RowSpan = rowSpanNum;
                       gvr.Cells[followCell5].RowSpan = rowSpanNum;
                       gvr.Cells[followCell6].RowSpan = rowSpanNum;
                       rowSpanNum = 1;
                       break;
                   }
                   if (i == GridView1.Rows.Count - 1)
                   {
                       gvr.Cells[cellNum].RowSpan = rowSpanNum;
                       gvr.Cells[followCell1].RowSpan = rowSpanNum;
                       gvr.Cells[followCell2].RowSpan = rowSpanNum;
                       gvr.Cells[followCell3].RowSpan = rowSpanNum;
                       gvr.Cells[followCell4].RowSpan = rowSpanNum;
                       gvr.Cells[followCell5].RowSpan = rowSpanNum;
                       gvr.Cells[followCell6].RowSpan = rowSpanNum;
                   }
               }
           }
       }

    
      // /// <summary>           
      // /// Gridview列的合并（普通列，不包含模板列）       
      // ///  注意：1.GridView在绑定的时候进行分组和排序，才能让相同的行放在一起     
      // ///        2.方法应用的时机，应该在Gridview的DataBound事件中使用      
      // /// </summary>     
      // ///  <param name="gv">需要合并的GridView对象</param>       
      // ///  <param name="columnIndex">所要合并列的索引</param>   ////// 
      //public static void UnitCell(GridView gv, int columnIndex)    
      //{            
      //    int i = 0;      
      //    //当前行数            
      //    string lastType = string.Empty;   
      //    //当前判断是否合并行对应列的值       
      //    int lastCell = 0;         
      //    //判断最后一个相同值的行的索引         
      //    if (gv.Rows.Count > 0)         
      //    {              
      //        lastType = gv.Rows[0].Cells[columnIndex].Text.ToString(); 
      //        gv.Rows[0].Cells[columnIndex].RowSpan = 1;        
      //        lastCell = 0;        
      //    }          
      //    for (i = 1; i < gv.Rows.Count; i++)   
      //    {               
      //        if (gv.Rows[i].Cells[columnIndex].Text == lastType) 
      //        {                   
      //            gv.Rows[i].Cells[columnIndex].Visible = false; 
      //            gv.Rows[lastCell].Cells[columnIndex].RowSpan++;    
      //        }             
      //        else            
      //        {                   
      //            lastType = gv.Rows[i].Cells[columnIndex].Text.ToString();        
      //            lastCell = i;                    
      //            gv.Rows[i].Cells[columnIndex].RowSpan = 1;   
      //        }      
      //    }      
      //}
      // /// <summary>       
      // /// /// Gridview列的合并（模板列）     
      // /// /// </summary>       
      // /// /// <param name="gv">需要合并的GridView对象</param>       
      // /// /// <param name="columnIndex">所要合并列的索引</param>       
      // /// /// <param name="lblName">模板列对象的ID</param>       
      // public static void UnitCell(GridView gv, int columnIndex, string lblName)   
      // {           
      //     int i = 0;            
      //     //当前行数           
      //     string lastType = string.Empty;       
      //     //当前判断是否合并行对应列的值           
      //     int lastCell = 0;        
      //     //判断最后一个相同值的行的索引     
      //     if (gv.Rows.Count > 0)            
      //     {               
      //         lastType = (gv.Rows[0].Cells[columnIndex].FindControl(lblName) as Label).Text;      
      //         gv.Rows[0].Cells[columnIndex].RowSpan = 1;      
      //         lastCell = 0;         
      //     }       
      //     for (i = 1; i < gv.Rows.Count; i++)      
      //     {               
      //         if ((gv.Rows[i].Cells[columnIndex].FindControl(lblName) as Label).Text == lastType)   
      //         {                
      //             gv.Rows[i].Cells[columnIndex].Visible = false;   
      //             gv.Rows[lastCell].Cells[columnIndex].RowSpan++;    
      //         }               
      //         else              
      //         {                
      //             lastType = (gv.Rows[i].Cells[columnIndex].FindControl(lblName) as Label).Text.ToString();  
      //             lastCell = i;        
      //             gv.Rows[i].Cells[columnIndex].RowSpan = 1;     
      //         }         
      //     }     
      // }
  
   
   }

}
